﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Loja.Aplicação;
using Loja.Banco;
using Loja.Padrao;
using Loja.Controles.Aplicação;

namespace Loja.Telas
{
    public partial class FormExtratoCaixa : Form
    {
        private Controle controle;

        private Int32 caixa;

        public FormExtratoCaixa(Controle controle, Int32 caixa_ID)
        {
            this.controle = controle;
            this.caixa = caixa_ID;
            InitializeComponent();
        }

        public void PopulaTela()
        {
            CarregaItemCaixa();
            CarregaDadosCaixa();
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            if (!controle.VerificarCaixa(caixa))
            {
                FormItemCaixa form = new FormItemCaixa(controle, caixa, 0, 1);
                form.ShowDialog(this);
                PopulaTela();
            }
            else
            {
                MessageBox.Show("Caixa precisa estar aberto!");
            }
        }

        public void CarregaItemCaixa()
        {
            var itemCaixas = controle.BuscaItemCaixa(caixa);
            dgDados.DataSource = itemCaixas; 
        }

        private void FormExtratoCaixa_Load(object sender, EventArgs e)
        {
            PopulaTela();
        }

        public void CarregaDadosCaixa() 
        {
            var dados = controle.BuscaExtratoCaixa(caixa);            
            if (dados.SaldoInicial > 0)
            {
                txtValorAbertura.BackColor = Color.Honeydew;
                txtValorAbertura.Text = dados.SaldoInicial.ToString();
            }
            else
            {
                txtValorAbertura.BackColor = Color.PeachPuff;
                txtValorAbertura.Text = dados.SaldoInicial.ToString();
            }
            if (dados.SaldoFinal > 0)
            {
                txtSaldoFinal.BackColor = Color.Honeydew;
                txtSaldoFinal.Text = dados.SaldoFinal.ToString();
            }
            else
            {
                txtSaldoFinal.BackColor = Color.PeachPuff;
                txtSaldoFinal.Text = dados.SaldoFinal.ToString();
            }
            var dadosCaixa = controle.BuscaCaixaExtrato(caixa);
            txtDataAbertura.Text = dadosCaixa.DataAbertura.ToString();
            txtDataFechamento.Text = dadosCaixa.DataFechamento.ToString();
            if (dadosCaixa.StatusCaixa == "Aberto")
            {
                btnNovo.Enabled = true;
            }
            else
            {
                btnNovo.Enabled = false;
            }
            txtStatus.Text = dadosCaixa.StatusCaixa.ToString();
            txtUsuario.Text = dadosCaixa.Usuario.ToString();

           var dadosResumo = controle.BuscaExtratoResumo(caixa);

           if (dadosResumo.Caixa_ID == 0)
           {
               txtCheque.Text = "";
               txtCredito.Text = "";
               txtDebito.Text = "";
               txtDinheiro.Text = "";
           }
           else
           {
               txtCheque.Text = dadosResumo.TotalCheque.ToString();
               txtCredito.Text = dadosResumo.TotalCartaoCredito.ToString();
               txtDebito.Text = dadosResumo.TotalCartaoDebito.ToString();
               txtDinheiro.Text = dadosResumo.TotalDinheiro.ToString();
           }
            
        }
        
        private void dgDados_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            if (dgDados.Rows[e.RowIndex].Cells[3].Value.ToString().Equals("(+)"))
            {
                dgDados.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Honeydew;
            }
            else
            {
                dgDados.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.PeachPuff;
            }
        }
                
        private void dgDados_DoubleClick(object sender, EventArgs e)
        {            
            FormItemCaixa form = new FormItemCaixa(controle, caixa, Convert.ToInt32(dgDados.CurrentRow.Cells[0].Value), 0);
            form.ShowDialog(this);
            PopulaTela();
        }

        private void btnImprimir_Click(object sender, EventArgs e)
        {
            RelatorioExtratoCaixa f = new RelatorioExtratoCaixa(caixa);
            f.ShowDialog(this);
        }

        private void btnSair_Click_1(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
